"""
自定义分页器
"""

from rest_framework.response import Response
from rest_framework.pagination import PageNumberPagination

class MyPage(PageNumberPagination):

    max_page_size = 20 # 最大数量
    page_size_query_param = 'pagesize' # ?pagesize=10 --> 默认值为page_size不符合业务需求
    page_query_param = 'page' # ?page=1
    page_size = 10 # 默认每页数量

    def get_paginated_response(self, data):
        # 功能：构建响应参数
        # 参数：data --> 当前页数据(一个查询集的分页的子级序列化结果)
        # 返回值：响应对象
        return Response({
            'counts': self.page.paginator.count,
            'lists': data,
            'page': self.page.number, # 当前页码
            'pages': self.page.paginator.num_pages, # 总页数
            'pagesize': self.page_size
        })